package LeetCode刷题;

import java.util.Comparator;
import java.util.LinkedList;

/**
 * @program: Java_Study
 * @author: Xiaofan
 * @createTime: 2021-10-16 10:47
 * @description: Functions of this class is
 * 当一个元素要入栈时，我们取当前辅助栈的栈顶存储的最小值，与当前元素比较得出最小值，将这个最小值插入辅助栈中；
 *
 * 当一个元素要出栈时，我们把辅助栈的栈顶元素也一并弹出；
 *
 * 在任意一个时刻，栈内元素的最小值就存储在辅助栈的栈顶元素中。
 * 官方题解：
 * class MinStack {
 *     Stack<Integer> A, B;
 *     public MinStack() {
 *         A = new Stack<>();
 *         B = new Stack<>();
 *     }
 *     public void push(int x) {
 *         A.add(x);
 *         if(B.empty() || B.peek() >= x)
 *             B.add(x);
 *     }
 *     public void pop() ji{
 *         if(A.pop().equals(B.peek()))
 *             B.pop();
 *     }
 *     public int top() {
 *         return A.peek();
 *     }
 *     public int min() {
 *         return B.peek();
 *     }
 * }
 **/
public class NoNoNomdmd辅助栈帮助实现最小栈 {
    /**
     *  !!!!!!!!!!!!!!!!一定要判断最小栈不为空的时候！！！！！！！！或者添加元素！！！！！小于等于！！！！！！栈顶元素的时候，才能添加入最小栈
     */
    public static void main(String args[]){
        LinkedList<Integer> stack=new LinkedList();
        stack.add(-2);
        stack.add(0);
        stack.add(-3);

        stack.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2-o1;
            }
        });
        System.out.println(stack);
    }
}